; Kernel.asm - PharnOS
; Contributors: pharnos, xMine
; Inspired by header.asm - Tỳndur
; Code Sektion
[BITS 32s]

section multiboot
FLAGS    equ 0b00000001       ; Module 4k-aligned
MAGIC    equ 0x1BADB002       ; Magicnumber - Erkennungsmerkmal für Grub
CHECKSUM equ -(MAGIC + FLAGS) ; Checksum

align 4
MultiBootHeader:
  dd MAGIC       ; Magic number
  dd FLAGS       ; Flags
  dd CHECKSUM    ; Checksum

section .text
global loader ; loader für Linker sichtbar machen
extern main   ; main-Funktion des C-Kernels

loader:

  mov esp,stack ; Stack in die bss Sektion verschieben

  ;push eax         ; Multiboot Magicnumber auf den Stack legen <- brauchen wir nicht
  push ebx         ; Adresse der Multiboot-Structure auf den Stack legen

  call main        ; main-Funktion des C-Kernels aufrufen

  cli ; falls der Kernel bis hier her kommt, CPU anhalten
  hlt

; Data Sektion
section .data

; Stack
section .bss
; NASM Direktive für uninitialisierter Speicher - rund 64kb
resb 0x10000
; stack für'n Kernel
global stack
stack:
